Methods and apparatuses for rate adaptation of quality of service based application

ABSTRACT

A method, system, and computer program product for identifying network congestion in a communication system. A connection manager identifies a number of packet delay times of a plurality of data packets within the communication system; determines whether the at least one packet delay time meets a threshold; and responsive to the at least one packet delay time meeting the threshold, adjusts a congestion indicator.

TECHNICAL FIELD

This application is a continuation of U.S. application Ser. No.13/568,165, filed on Aug. 7, 2012. The content of the above-identifiedapplication is incorporated by reference in its entirety for allpurposes.

Aspects of this disclosure relate generally to rate adaptation. Inparticular, an aspect of this disclosure relates to identifying networkcongestion in a communication system.

BACKGROUND

User equipment (UE), such as smart phones, tablets, laptops, etc. areincreasingly equipped with both WLAN (e.g. Wi-Fi) and 3G (UMTS, LTE)cellular radio (WWAN). A multi-radio UE may connect to Internet overWLAN whenever it is available, and switch to WWAN when performancedegradation over WLAN is detected or WLAN is less beneficial for otherreasons.

Peak and average data rates and round trip delay times in Up- and inDownlink can significantly differ and/or fluctuate while using these twowireless technologies. During handover scenarios from Wi-Fi to Cellular,a typical Wi-Fi connection such as 802.11g delivers up to 54 Mbps peakdata rates over-the-air compared to a typical 3G Re1-7/Cat-14 data rateof 21 Mbps in theory. In reality data rates of 15-20 Mbps on Wi-Fi vs. 5Mbps on 3G can be seen on TCP/IP throughput level. This data throughputgap in handover scenarios from Wi-Fi to Cellular can result in userexperience degradations (audio and/or video stalled or entirelydisappeared) during the duration when data flow is given to Cellularuntil coding rate adaption on application layer was able to compensate.

During mobility scenarios while being on Cellular, the currentlyachieved throughput and packet delays in uplink and downlink can varydepending on many different factors such as 3g coverage areas, cellload, HSDPA serving cell change, HSDPA/HSUPA (E-DCH) network/cellcapabilities, etc. Round trip delays in the Cellular network can varyand depending on the network and signal conditions in the network exceedthe maximum what is required to send/receive audio calls or video calls(audio+video).

Therefore, it would be advantageous to have a method, system, andcomputer program product that addresses one or more of the issuesdiscussed above.

SUMMARY

In an aspect of this disclosure, a method for identifying networkcongestion in a communication system. A connection manager identifies anumber of packet delay times of a plurality of data packets within thecommunication system; determines whether the at least one packet delaytime meets a threshold; and responsive to the at least one packet delaytime meeting the threshold, adjusts a congestion indicator.

In an aspect of this disclosure, a system is provided for identifyingnetwork congestion in a communication system. The system comprises auser equipment configured to identify a number of packet delay times ofa plurality of data packets within the communication system; determinewhether the at least one packet delay time meets a threshold; andresponsive to the at least one packet delay time meeting the threshold,adjust a congestion indicator.

In an aspect of this disclosure, a computer program product comprisinglogic encoded on a tangible media for identifying network congestion ina communication system. The logic comprising instructions for:identifying a number of packet delay times of a plurality of datapackets within the communication system; determining whether the atleast one packet delay time meets a threshold; and responsive to the atleast one packet delay time meeting the threshold, adjusting acongestion indicator.

BRIEF DESCRIPTION OF DRAWINGS

In the drawings, like reference characters generally refer to the sameparts throughout the different views. The drawings are not necessarilyto scale. In the following description, aspects of this disclosure aredescribed with reference to the following drawings, in which:

FIG. 1 is an illustration of a wireless network in accordance with anaspect of this disclosure;

FIG. 2 is an illustration of inter arrival time in accordance with anaspect of this disclosure;

FIG. 3 is an illustration of inter departure time in accordance with anaspect of this disclosure;

FIG. 4 is an illustration of intra packet delay in accordance with anaspect of this disclosure;

FIG. 5 is a block diagram of a communication system in accordance withan aspect of this disclosure;

FIG. 6 is a flowchart for identifying network congestion in acommunication system in accordance with an aspect of this disclosure;

FIG. 7 is a flowchart for monitoring the inter-arrival time of receivingpackets in accordance with an aspect of this disclosure;

FIG. 8 is a flowchart for estimate the available bandwidth using lowduty-cycle probes in accordance with an aspect of this disclosure;

FIG. 9 is a flowchart for monitoring the inter-departure time of sentpackets in accordance with an aspect of this disclosure; and

FIG. 10 is a flowchart for monitoring the intra-packet delay time ofpackets in accordance with an aspect of this disclosure.

DETAILED DESCRIPTION

The following detailed description refers to the accompanying drawingsthat show, by way of illustration, specific details and aspects of thisdisclosure. The word “exemplary” is used herein to mean “serving as anexample, instance, or illustration”. Any aspect of this disclosure ordesign described herein as “exemplary” is not necessarily to beconstrued as preferred or advantageous over other aspects of thisdisclosure or designs.

FIG. 1 is an illustration of a wireless network in accordance with anaspect of this disclosure. In an aspect of this disclosure, wirelessnetwork 2 may be a network implemented with radio signals. In differentaspects, various components of wireless network 2 may use wiredconnections as well as wireless connections. Wireless network 2 may be awireless wide area network (WWAN). The WWAN may use mobiletelecommunication cellular network technologies such as Long TermEvolution (LTE), LTE-Advanced, WiMAX (often called a wirelessmetropolitan area network or WMAN), UMTS, CDMA2000, GSM, cellulardigital packet data (CDPD) and Mobitex to transfer data.

In an aspect of this disclosure, wireless network 2 may include userequipment (UE) 4, Node-B 4, Node-B 8, Radio Network Controller (RNC) 10,Serving General Packet Radio Service Support Node (SGSN) 12, GatewayGeneral Packet Radio Service Support Node (GGSN) 14, and Internet 16. UE4 transmits and receives information through Node-Bs 6 and 8. In turn,Node-B's forward information to and from RNC 10. RNC 10 communicateswith SGSN 12 which communicates with GGSN 14. Finally, GGSN 14 iscommunicates between SGSN 12 and Internet 16.

Furthermore, in an aspect of this disclosure, Node-B's 6 and 8 and RNC10 may be part of UMTS Terrestrial Radio Access Network (UTRAN).Additionally, SGSN 12 and GGSN 14 may be part of the Core Network (CN).

In an aspect of this disclosure, UE 4 may be a mobile handsets carriedby end users. The UTRAN allows connectivity between a UE and the CN. TheCN may consist of two components: base stations, called Node-Bs, andRadio Network Controllers (RNC), which control multiple Node-Bs. UTRANfeatures such as packet scheduling, radio resource control, and handovercontrol may be implemented at RNC 10. The CN operates, in particularGGSN 14, to serve as a gateway hiding UMTS internal infrastructures fromthe external network, such as Internet 16.

In an aspect of this disclosure, Node-Bs 6 and 8 may be, as used inUMTS, equivalent to the base transceiver station (BTS) description usedin the Global System for Mobile Communications (GSM). In contrast withGSM base stations, Node-Bs 6 and 8 may use Wideband Code DivisionMultiple Access or Time Division Synchronous Code Division MultipleAccess (WCDMA/TD-SCDMA) as an air interface technology. As in allcellular systems, such as UMTS and GSM, the Node-Bs 6 and 8 have radiofrequency transmitters and receivers used to communicate directly withmobile devices.

In an aspect of this disclosure, RNC 10 is a governing element in a UMTSradio access network and is responsible for controlling Node Bs 6 and 8that are connected to it. RNC 10 carries out radio resource management,some of the mobility management functions, and is the point whereencryption is done before user data is sent to and from the mobile.

The illustration of wireless network 2 in FIG. 1 is not meant to implyphysical or architectural limitations to the manner in which an aspectof this disclosure may be implemented. Other components in additionand/or in place of the ones illustrated may be used. Some components maybe unnecessary in an aspect of this disclosure.

An aspect of this disclosure recognizes and takes into account thatinternet quality of service based (QoS-based) throughput-sensitiveapplications such as Skype or GoogleTalk (voice-/video-call VoIPapplications) may adapt coding rates depending on underlying link levelperformance of the currently chosen radio link. However, this codingrate adaption on application layer happens only in the area of severalseconds which during that duration leads to disruption of audio and/orvideo quality.

As the cellular technology is evolving into 4G, e.g. LTE, networkthroughput will continue to increase so that user will be able to notonly run non real-time applications, e.g. web-browsing, but alsoreal-time applications, e.g. VoIP (video) call, etc.

However, the main metric used to determine the cellular connectionquality is still “signal strength”, which does not reflect the impact ofclient or network traffic load, and there is lack of mechanisms tomonitor and determine whether the cellular connection is capable ofsupporting real-time applications or not at any particular time or/andlocation.

One or more aspects of this disclosure provide middleware functionality(“Connection Manager (CM)”) sitting in-between the wireless radios(Wi-Fi and Cellular) and the internet QoS based application to monitorcellular throughout capabilities and status in uplink and in downlink.

This information may be forwarded to the throughput-sensitiveapplication, and can be used for preventive measures on applicationlayer such as early coding rate adaption or prioritizing critical datato be sent/received (e.g. voice packets higher prior than videopackets).

This information may also be used by CM to decide whether to move anactive IP flow, e.g. VoIP call, from WLAN to WWAN, when the LTERelease-10 Seamless Offload and IP Flow Mobility mechanism as specifiedin 3GPP TS 24.303 is used. For example, if the Cellular connection isnot capable of supporting VoIP application, the VoIP traffic may stay onthe Wi-Fi connection even if its performance is degrading.

In order to assess the conditions of the cellular modem at any time, andwhether this has any implications on the QoS based application, thefollowing metrics may be evaluated by the middleware:

The delay (non-RAT specific):

-   -   a. Inter Arrival Time in the downlink and    -   b. Inter Departure Time & Intra Packet Delay in the uplink.

The throughput (RAT specific) for:

Downlink

-   -   a) 3G HSDPA−>see below ‘T-Put over Time’    -   b) LTE−>see below ‘T-Put over Time’

Uplink

-   -   a) 3G Rel'99−>on MAC level: TCFI+re-transmission    -   b) 3G HSUPA−>on MAC level: TCFI+re-transmission    -   c) LTE

FIG. 2 is an illustration of inter arrival time in accordance with anaspect of this disclosure. Received packets 202, 204, 206, 208 may bepackets that are sent from base station 210 to user equipment 212.

Inter arrival time (IAT) 214, 216, 218 may be the interval between twosuccessfully received packets. For example, inter arrival time 214 isbetween received packets 202 and 204. IAT may help indicate how manyusers are using the radio resource simultaneously. For example,inter-arrival time of an individual user may increase as more and moreusers are using the resource.

Additionally, packet 220 is a lost packet. A lost packet does not factorinto the inter-arrival time until the packet has a successful transfer.

FIG. 3 is an illustration of inter departure time in accordance with anaspect of this disclosure. Sent packets 302, 304, 306, 308 may bepackets that are sent from user equipment 310 to base station 312.

Inter departure time (IDT) 314, 316, 318 may be the interval between twosuccessfully sent packets. For example, inter departure time 314 isbetween sent packets 302 and 304.

Additionally, packet 320 is a lost packet. A lost packet does not factorinto the inter-arrival time until the packet has a successful transfer.

FIG. 4 is an illustration of intra packet delay in accordance with anaspect of this disclosure. Packets 402, 404, 406, 408 may be packetsthat are sent from the application layer 410 of the user equipment tothe modem 412 of the user equipment, then forwarded to the base station414. The interval between a packet arriving and the packet beingsuccessfully transmitted is a quality of service metric for real-timeapplications, e.g. VoIP.

Intra packet delay (IDP) 416, 418, 420, 422 may be the interval betweena packet sent from application layer 410 to modem 412 and then modem 412sending the packet to base station 414. For example, Intra packet delay416 is between sent packet 402 from application layer 410 and thenpacket 402 being sent from modem 414. The IPD will increase ifapplication layer 410 is sending packets to modem 412 faster than modem412 can send the packets to base station 414.

Additionally, packet 424 is a lost packet. A lost packet does not factorinto the inter-arrival time until the packet has a successful transfer.

FIG. 5 is a block diagram of a communication system in accordance withan aspect of this disclosure. Communication system 500 may include userequipment 502 and base station 504. User equipment 502 may includeconnection manager 506, application layer 508, WLAN radio 510, WWANradio 512, uplink antenna 514, and downlink antenna 516.

Connection manager 506 may be configured to identifying a number ofvalues. For example, connection manager 506 may be configured toidentify the inter departure time, inter arrival time, intra packetdelay, and other desirable values. Connection manager 506 mayidentifying the values based on information received from theapplication layer 508 and WWAN radio 512 in user equipment 502.

WWAN radio 512 has a monitoring unit 517, receiver queue 518, andtransmitter queue 519. Monitoring unit 517 may monitoring the receiverqueue 518, transmitter queue 519, uplink antenna 514, and downlinkantenna 516 to identify throughputs in the uplink and downlink.Monitoring unit 517 may then transmit the throughputs as information toconnection manager 506.

The connection manager 506 and WWAN radio 512 have a number ofcommunications 520, 522, 524, 526 with each other. These communicationshelp identify congestion in the network or local device. To the term“congestion” may indicate an overload in the network. Additionally, theterm “congestion” may also indicate a condition on the air interface(e.g. degraded radio conditions means bigger delay). The term“congestion” may refer to any aspect of the air interface and/or devicesin the communication system that may affect departure and arrivaldelays.

Communication 520 may be a pro-active communication in the downlink. Themaximum throughput user equipment 502 is capable of at any given timemay be extracted from URRC-DC Radio Bearer configuration. Theconfiguration may include the number of resource blocks, TrChconfiguration, modulation scheme, and/or spreading code. The maximumthroughput may also be polled in a fixed interval (for example, everysecond) when being in a cellular active mode. The throughput may also berequested in a stand-alone request during a Wi-Fi to cellular handoverscenario.

Communication 522 may be a reactive communication in the downlink. Whenthe data coming from the wireless link and being sent to the applicationlayer 508 is at a low throughput, a notification may be sent to theconnection manager 506 which can be extracted from the RLC receiverqueue 518. In another aspect, the monitoring unit 517 may send anunsolicited notification to be received by the connection manager 506.

Communication 524 may be a pro-active communication in the uplink. Themaximum throughput user equipment 502 is capable of at any given timemay be extracted from URRC-DC Radio Bearer configuration. Theconfiguration may include the number of resource blocks, TrChconfiguration, modulation scheme, and/or spreading code. The maximumthroughput may also be polled in a fixed interval (for example, everysecond) when being in a cellular active mode. The throughput may also berequested in a stand-alone request during a Wi-Fi 33 to cellularhandover scenario.

Communication 526 may be a reactive communication in the uplink. Whenthe data coming from the wireless link and being sent to the applicationlayer 508 is at a low throughput, a notification may be sent to theconnection manager 506 which can be extracted from the RLC transmitterqueue 519. In another aspect, the monitoring unit 517 may send anunsolicited notification to be received by the connection manager 506.

Additionally, user equipment 502 may include one or more memory elements(e.g., memory element 530) for storing information to be used inachieving operations associated with applications management, asoutlined herein. These devices may further keep information in anysuitable memory element (e.g., random access memory (RAM), read onlymemory (ROM), field programmable gate array (FPGA), erasableprogrammable read only memory (EPROM), electrically erasableprogrammable ROM (EEPROM), etc.), software, hardware, or in any othersuitable component, device, element, or object where appropriate andbased on particular needs. Any of the memory or storage items discussedherein should be construed as being encompassed within the broad term‘memory element’ as used herein.

Furthermore, the operations for managing congestion of user equipment502 herein may be implemented by logic encoded in one or more tangiblemedia, which may be inclusive of non-transitory media (e.g., embeddedlogic provided in an application specific integrated circuit (ASIC),digital signal processor (DSP) instructions, software potentiallyinclusive of object code and source code to be executed by a processoror other similar machine, etc.). In some of these instances, one or morememory elements (e.g., memory element 530) can store data used for theoperations described herein. This includes the memory elements beingable to store software, logic, code, or processor instructions that areexecuted to carry out the activities described herein.

Additionally, user equipment 502 may include processing unit 532.Processing unit 532 may be a processor, multi-core processor, singlecore process, micro controller, controller circuit, or any other type ofprocessing device. A processing unit can execute any type ofinstructions associated with the data to achieve the operations detailedherein. In one aspect of this disclosure, the processors could transforman element or an article (e.g., data) from one state or thing to anotherstate or thing. In another example, the activities outlined herein maybe implemented with fixed logic or programmable logic (e.g.,software/computer instructions executed by a processor) and the elementsidentified herein could be some type of a programmable processor,programmable digital logic (e.g., an FPGA, an EPROM, an EEPROM), or anASIC that includes digital logic, software, code, electronicinstructions, flash memory, optical disks, CD-ROMs, DVD ROMs, magneticor optical cards, other types of machine-readable mediums suitable forstoring electronic instructions, or any suitable combination thereof.

The illustration of communication system 500 in FIG. 5 is not meant toimply physical or architectural limitations to the manner in which anaspect of this disclosure may be implemented. Other components inaddition and/or in place of the ones illustrated may be used. Somecomponents may be unnecessary in an aspect of this disclosure

The foregoing has outlined rather broadly the features and technicaladvantages of the different aspects of this disclosure in order for thedetailed description that follows may be better understood. Additionalfeatures and advantages of the aspects of this disclosure will bedescribed hereinafter. It should be appreciated by those skilled in theart that the conception and the specific aspects disclosed may bereadily utilized as a basis for modifying or redesigning otherstructures or processes for carrying out the same purposes of thedifferent aspects of this disclosure. It should also be realized bythose skilled in the art that such equivalent constructions do notdepart form the spirit and scope as set forth in the appended claims.

FIG. 6 is a flowchart for identifying network congestion in acommunication system in accordance with an aspect of this disclosure.Process 600 may be implemented in communication system 500 from FIG. 5.

In an aspect of this disclosure, process 600 begins with identifying anumber of packet delay times of a plurality of data packets within thecommunication system (step 602). The packet delay times may be interarrival times, inter departure times, and/or intra packet delay times.

Then, the process determines whether the at least one packet delay timemeets a threshold (step 604). In different aspects, the threshold may bea high or low threshold. If the threshold is a high threshold, theprocess may determine whether any of the at least one packet delay timeis greater than the threshold. If the threshold is a low threshold, thenthe process may determine whether a number of consecutive packet delaytimes of the at least one packet delay time is less than the threshold.

Next, the process adjusts a congestion indicator in response to the atleast one packet delay time meeting the threshold (step 606). If any ofthe packet delays are greater than the high threshold, then the processsets the congestion indicator to active. If the number of consecutivepacket delay times of the at least one packet delay time is less thanthe threshold, then the process sets the congestion indicator to active.

Thereafter, the process terminates.

FIG. 7 is a flowchart for monitoring the inter-arrival time of receivingpackets in accordance with an aspect of this disclosure. Process 700 maybe implemented in communication system 500 from FIG. 5.

Process 700 begins with identifying a number of inter-arrival times of aplurality of data packets within the communication system (step 702).The inter-arrival times may be the time periods between successfullyreceived packets at the user equipment.

Next, the process determines whether the inter-arrival time of any datapacket is greater than a high threshold (step 704). The inter-arrivaltime of the data packet may be calculated relative to the previous datapacket. If the inter-arrival time of any data packet is greater than thehigh threshold, set a downlink network congestion indicator to active(step 706). Active indicates that there is congestion. When setting thecongestion to active, a bit may be set to 1 or 0 to indicate an activebit.

The, the process determines whether the inter-arrival time of the lastconsecutive predetermined number of packets is less than a low threshold(step 708). If the inter-arrival time of the last consecutivepredetermined number of packets is less than the low threshold, set adownlink network congestion indicator to inactive (step 710). Inactiveindicates that there is no longer a congestion. Instead of using the lowthreshold, the process may use the high threshold again. When settingthe congestion to inactive, a bit may be set to 1 or 0, whichever hasbeen set as the inactive bit designation. The predetermined number ofpackets may represent a downlink network congestion detection packetthreshold. The predetermined number of packets may indicate the numberof packets needed to identify that the congestion is no longer presentin the network.

Additionally, a modem of the user equipment may report the downlinknetwork congestion indicator (step 712). The modem may report theindicator immediately. In other aspects, the modem may report theindicator to the connection manager and the report may be done during areporting window. In one or more aspects, the modem may also report thedownlink maximum throughput, downlink minimum throughput, downlinkaverage throughput, or any combination of these values. These values maybe reported during the reporting window. The downlink reporting windowmay be a number of units with each unit having a time interval. Forexample, the window may be ten intervals of 100 ms for each interval.Each value may be measured during the time interval and maximum,minimum, and average may be computed during the last interval of thewindow. Thereafter, the process terminates.

FIG. 8 is a flowchart for estimate the available bandwidth using lowduty-cycle probes in accordance with an aspect of this disclosure.Process 800 may be implemented in communication system 500 from FIG. 5.

Process 800 begins with a connection manager sending probes of packetsperiodically with fixed probing interval and fixed probing packet size(step 802). The probes may be sent in any number of intervals. In one ormore aspects, the probes are sent every 4 seconds. The probing packetsize may be set to any fixed size. In one or more aspects, the fixedprobing packet size may be set to 500 bytes.

Next, the cellular modem measures the intra-packet delay of eachsuccessfully transmitted packet (step 804).

Then, the process reports the maximum intra-packet delay (D_(max)),minimum intra-packet delay (D_(min)), and average intra-packet delay(D_(avg)) of last N_(p) packets, whose IP packet size is equal to S_(p)(step 806). The variables N_(p) and S_(p) may be set dynamically, by auser, or preprogrammed.

Next, the connection manager identifies the uplink available throughputas a function of Y, maximum intra-packet delay, minimum intra-packetdelay, and average intra-packet delay (step 808). In an aspect, theuplink available for throughput may be S_(p)/D_(max).

The connection manager may reconfigure N_(p) and S_(p). The connectionmanager may also start or stop the algorithm through the AT command.When the algorithm is started, the modem should report D_(max), D_(min),and D_(avg) through the AT command for every N_(p) packets whose size isequal to S_(p). If S_(p) is set to “0”, the algorithm will measure allpackets regardless of their packet size. Thereafter, the processterminates.

FIG. 9 is a flowchart for monitoring the inter-departure time of sentpackets in accordance with an aspect of this disclosure. Process 900 maybe implemented in communication system 500 from FIG. 5.

Process 900 begins with identifying a number of inter-departure times ofa plurality of data packets within the communication system (step 902).The inter-departure times may be the time periods between consecutivesuccessfully transmitted packets from the user equipment.

Determine whether the inter-departure time of any data packet is greaterthan a high threshold (step 904). The inter-departure time of the datapacket may be calculated relative to the previous data packet. If theinter-departure time of any data packet is greater than the highthreshold, set a uplink network congestion indicator to active (step906). Active indicates that there is congestion. When setting thecongestion to active, a bit may be set to 1 or 0, whichever has been setas the active bit designation.

Determine whether the inter-departure time of the last consecutivepredetermined number of packets is less than a low threshold (step 908).If the inter-departure time of the last consecutive predetermined numberof packets is less than the low threshold, set an uplink networkcongestion indicator to inactive (step 910). Inactive indicates thatthere is no longer congestion. Instead of using the low threshold, theprocess may use the high threshold again. When setting the congestion toinactive, a bit may be set to 1 or 0, whichever has been designated asthe inactive bit. The predetermined number of packets may represent anuplink network congestion detection packet threshold. The predeterminednumber of packets may indicate the number of packets needed to identifythat the congestion is no longer present in the network.

Additionally, a modem of the user equipment may report the uplinknetwork congestion indicator (step 912). The modem may report theindicator immediately. In other aspects, the modem may report theindicator to the connection manager and the report may be done during areporting window. In one or more aspects, the modem may also report theuplink maximum throughput, uplink minimum throughput, uplink averagethroughput, uplink latest throughput, or any combination of thesevalues. These values may be reported during the reporting window. Theuplink reporting window may be a number of units with each unit having atime interval. For example, the window may be ten intervals of 100 msfor each interval. Each value may be measured during the time intervaland maximum, minimum, and average may be computed during the lastinterval of the window. Thereafter, the process terminates.

FIG. 10 is a flowchart for monitoring the intra-packet delay time ofpackets in accordance with an aspect of this disclosure. Process 1000may be implemented in communication system 500 from FIG. 5.

Process 1000 begins with identifying a number of intra-packet delaytimes of a plurality of data packets within the communication system(step 1002). The intra-packet delay times may be the time intervalsbetween a packet arriving at the modem and the packet being successfullytransmitted.

Determine whether the intra-packet delay time of any data packet isgreater than a high threshold (step 1004). The intra-packet delay timeof the data packet may be calculated relative to the previous datapacket. If the intra-packet delay time of any data packet is greaterthan the high threshold, set a uplink network congestion indicator toactive (step 1006). Active indicates that there is a congestion. Whensetting the congestion to active, a bit may be set to 1 or 0, whicheverhas been set as the active bit designation.

Determine whether the intra-packet delay time of the last consecutivepredetermined number of packets is less than a low threshold (step1008). If the intra-packet delay time of the last consecutivepredetermined number of packets is less than the low threshold, set anuplink local congestion indicator to inactive (step 1010). Inactiveindicates that there is no longer a congestion. Instead of using the lowthreshold, the process may use the high threshold again. For example,the same threshold may be used for both the high and low thresholds.When setting the congestion to inactive, a bit may be set to 1 or 0,whichever has been designated as the inactive bit. The predeterminednumber of packets may represent an uplink local congestion detectionpacket threshold. The predetermined number of packets may indicate thenumber of packets needed to identify that the congestion is no longerpresent in the user equipment.

Additionally, a modem of the user equipment may report the uplink localcongestion indicator (step 1012). The modem may report the indicatorimmediately. In other aspects, the modem may report the indicator to theconnection manager and the report may be done during a reporting window.In one or more aspects, the modem may also report the uplink maximumthroughput, uplink minimum throughput, uplink average throughput, uplinklatest throughput, or any combination of these values. These values maybe reported during the reporting window. The uplink reporting window maybe a number of units with each unit having a time interval. For example,the window may be ten intervals of 100 ms for each interval. Each valuemay be measured during the time interval and maximum, minimum, andaverage may be computed during the last interval of the window.Thereafter, the process terminates.

The flowcharts and block diagrams in the different depicted aspectsillustrate the architecture, functionality, and operation of somepossible implementations of apparatus, methods, system, and computerprogram products. In this regard, each block in the flowchart or blockdiagrams may represent a module, segment, or portion of computer usableor readable program code, which comprises one or more executableinstructions for implementing the specified function or functions. Insome alternative implementations, the function or functions noted in theblock may occur out of the order noted in the figures. For example, insome cases, two blocks shown in succession may be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved.

In an aspect of this disclosure, a method is provided for identifyingnetwork congestion in a communication system. The method comprisesidentifying a number of packet delay times of a plurality of datapackets within the communication system; determining whether the atleast one packet delay time meets a threshold; and responsive to the atleast one packet delay time meeting the threshold, adjusting acongestion indicator.

In an example aspect of this disclosure, the threshold is a highthreshold and wherein the step of determining comprises: determiningwhether any of the at least one packet delay time is greater than thethreshold; and wherein the step of adjusting comprises: setting thecongestion indicator to active.

In an example aspect of this disclosure, the threshold is a lowthreshold and wherein the step of determining comprises: determiningwhether a number of consecutive packet delay times of the at least onepacket delay time is less than the threshold; and wherein the step ofadjusting comprises: setting the congestion indicator to inactive.

In an example aspect of this disclosure, a packet delay time of thenumber of packet delay times is a difference in time between a set ofthe plurality of packets being sent from a user equipment in thecommunication system, wherein the congestion indicator is a networkuplink congestion indicator.

In an example aspect of this disclosure, a packet delay time of thenumber of packet delay times is a difference in time between a set ofthe plurality of packets being received from a base station in thecommunication system, wherein the congestion indicator is a networkdownlink congestion indicator.

In an example aspect of this disclosure, a packet delay time of thenumber of packet delay times is a difference in time between a packet ofthe plurality of packets being received from the application layer andsent to a base station of the communication system, wherein thecongestion indicator is a local uplink congestion indicator.

In an example aspect of this disclosure, the method further comprisesreporting the congestion indicator to an application layer of a userequipment.

In an aspect of this disclosure, a system is provided for identifyingnetwork congestion in a communication system. The system comprises auser equipment configured to identify a number of packet delay times ofa plurality of data packets within the communication system; determinewhether the at least one packet delay time meets a threshold; andresponsive to the at least one packet delay time meeting the threshold,adjust a congestion indicator.

In an example aspect of this disclosure, the threshold is a highthreshold and wherein the step of determining comprises: determiningwhether any of the at least one packet delay time is greater than thethreshold; and wherein the step of adjusting comprises: setting thecongestion indicator to active.

In an example aspect of this disclosure, the threshold is a lowthreshold and wherein the step of determining comprises: determiningwhether a number of consecutive packet delay times of the at least onepacket delay time is less than the threshold; and wherein the step ofadjusting comprises: setting the congestion indicator to inactive.

In an example aspect of this disclosure, a packet delay time of thenumber of packet delay times is a difference in time between a set ofthe plurality of packets being sent from a user equipment in thecommunication system, wherein the congestion indicator is a networkuplink congestion indicator.

In an example aspect of this disclosure, a packet delay time of thenumber of packet delay times is a difference in time between a set ofthe plurality of packets being received from a base station in thecommunication system, wherein the congestion indicator is a networkdownlink congestion indicator.

In an example aspect of this disclosure, a packet delay time of thenumber of packet delay times is a difference in time between a packet ofthe plurality of packets being received from the application layer andsent to a base station of the communication system, wherein thecongestion indicator is a local uplink congestion indicator.

In an example aspect of this disclosure, the system further comprises aconnection manager reporting the congestion indicator to an applicationlayer of a user equipment.

In an aspect of this disclosure, a computer program product comprisinglogic encoded on a tangible media for identifying network congestion ina communication system. The logic comprising instructions for:identifying a number of packet delay times of a plurality of datapackets within the communication system; determining whether the atleast one packet delay time meets a threshold; and responsive to the atleast one packet delay time meeting the threshold, adjusting acongestion indicator.

In an example aspect of this disclosure, the threshold is a highthreshold and wherein the instructions for determining compriseinstruction for: determining whether any of the at least one packetdelay time is greater than the threshold; and wherein the instructionsfor adjusting comprise instruction for: setting the congestion indicatorto active.

In an example aspect of this disclosure, the threshold is a lowthreshold and wherein the instructions for determining compriseinstruction for: determining whether a number of consecutive packetdelay times of the at least one packet delay time is less than thethreshold; and wherein the instructions for adjusting compriseinstruction for: setting the congestion indicator to inactive.

In an example aspect of this disclosure, a packet delay time of thenumber of packet delay times is a difference in time between a set ofthe plurality of packets being sent from a user equipment in thecommunication system, wherein the congestion indicator is a networkuplink congestion indicator.

In an example aspect of this disclosure, a packet delay time of thenumber of packet delay times is a difference in time between a set ofthe plurality of packets being received from a base station in thecommunication system, wherein the congestion indicator is a networkdownlink congestion indicator.

In an example aspect of this disclosure, the logic further comprisesinstructions for reporting the congestion indicator to an applicationlayer of a user equipment.

What is claimed is:
 1. A method for identifying network congestion in acommunication system, the method comprising: identifying a number ofpacket delay times of a plurality of data packets within thecommunication system; determining whether the at least one packet delaytime meets a threshold; and responsive to the at least one packet delaytime meeting the threshold, adjusting a congestion indicator.
 2. Themethod of claim 1, wherein the threshold is a high threshold and whereinthe step of determining comprises: determining whether any of the atleast one packet delay time is greater than the threshold; and whereinthe step of adjusting comprises: setting the congestion indicator toactive.
 3. The method of claim 1, wherein the threshold is a lowthreshold and wherein the step of determining comprises: determiningwhether a number of consecutive packet delay times of the at least onepacket delay time is less than the threshold; and wherein the step ofadjusting comprises: setting the congestion indicator to inactive. 4.The method of claim 1, wherein a packet delay time of the number ofpacket delay times is a difference in time between a set of theplurality of packets being sent from a user equipment in thecommunication system, wherein the congestion indicator is a networkuplink congestion indicator.
 5. The method of claim 1, wherein a packetdelay time of the number of packet delay times is a difference in timebetween a set of the plurality of packets being received from a basestation in the communication system, wherein the congestion indicator isa network downlink congestion indicator.
 6. The method of claim 1,wherein a packet delay time of the number of packet delay times is adifference in time between a packet of the plurality of packets beingreceived from the application layer and sent to a base station of thecommunication system, wherein the congestion indicator is a local uplinkcongestion indicator.
 7. The method of claim 1, further comprising:reporting the congestion indicator to an application layer of a userequipment.
 8. A system for identifying network congestion in acommunication system, the system comprising: a user equipment of thecommunication system configured to identify a number of packet delaytimes of a plurality of data packets within the communication system;determine whether the at least one packet delay time meets a threshold;and responsive to the at least one packet delay time meeting thethreshold, adjust a congestion indicator.
 9. The system of claim 8,wherein the threshold is a high threshold and wherein the step ofdetermining comprises: determining whether any of the at least onepacket delay time is greater than the threshold; and wherein the step ofadjusting comprises: setting the congestion indicator to active.
 10. Thesystem of claim 8, wherein the threshold is a low threshold and whereinthe step of determining comprises: determining whether a number ofconsecutive packet delay times of the at least one packet delay time isless than the threshold; and wherein the step of adjusting comprises:setting the congestion indicator to inactive.
 11. The system of claim 8,wherein a packet delay time of the number of packet delay times is adifference in time between a set of the plurality of packets being sentfrom a user equipment in the communication system, wherein thecongestion indicator is a network uplink congestion indicator.
 12. Thesystem of claim 8, wherein a packet delay time of the number of packetdelay times is a difference in time between a set of the plurality ofpackets being received from a base station in the communication system,wherein the congestion indicator is a network downlink congestionindicator.
 13. The system of claim 8, wherein a packet delay time of thenumber of packet delay times is a difference in time between a packet ofthe plurality of packets being received from the application layer andsent to a base station of the communication system, wherein thecongestion indicator is a local uplink congestion indicator.
 14. Thesystem of claim 8, further comprising: an application layer; and aconnection manager configured to report the congestion indicator to theapplication layer of the user equipment.
 15. A computer program productcomprising logic encoded on a tangible media for identifying networkcongestion in a communication system, the logic comprising instructionsfor: identifying a number of packet delay times of a plurality of datapackets within the communication system; determining whether the atleast one packet delay time meets a threshold; and responsive to the atleast one packet delay time meeting the threshold, adjusting acongestion indicator.
 16. The computer program product of claim 16,wherein the threshold is a high threshold and wherein the instructionsfor determining comprise instruction for: determining whether any of theat least one packet delay time is greater than the threshold; andwherein the instructions for adjusting comprise instruction for: settingthe congestion indicator to active.
 17. The computer program product ofclaim 16, wherein the threshold is a low threshold and wherein theinstructions for determining comprise instruction for: determiningwhether a number of consecutive packet delay times of the at least onepacket delay time is less than the threshold; and wherein theinstructions for adjusting comprise instruction for: setting thecongestion indicator to inactive.
 18. The computer program product ofclaim 16, wherein a packet delay time of the number of packet delaytimes is a difference in time between a set of the plurality of packetsbeing sent from a user equipment in the communication system, whereinthe congestion indicator is a network uplink congestion indicator. 19.The computer program product of claim 16, wherein a packet delay time ofthe number of packet delay times is a difference in time between a setof the plurality of packets being received from a base station in thecommunication system, wherein the congestion indicator is a networkdownlink congestion indicator.